Fix update_weekly: resolve all six unsatisfiable benchmark folders + run update job on Julia 1.12 - #1602
Merged
ChrisRackauckas merged 3 commits intoJun 23, 2026
Conversation
…-2 stack
The Weekly Update job (update_weekly) goes red because the per-folder
Pkg.update() of benchmarks/BayesianInference fails to resolve:
Unsatisfiable requirements detected for package SciMLBase:
- Turing 0.42 (pinned, latest DiffEqBayes 3.13 still requires Turing 0.42)
=> SciMLBase = 2
- RecursiveArrayTools 4 (compat) => SciMLBase 3 only
- OrdinaryDiffEq 7 (compat) => SciMLBase 3 only
Commit fb9a3b6 mechanically bumped every benchmark Project.toml to the
OrdinaryDiffEq v7 / SciMLBase v3 / RecursiveArrayTools v4 stack. That stack
is unreachable for this folder: DiffEqBayes/Turing are still pinned to
SciMLBase 2, so OrdinaryDiffEq must stay on v6 and RecursiveArrayTools on v3.
The committed Manifest was never actually migrated (it is still SciMLBase
2.144.0 / OrdinaryDiffEq 6.108.0 / RAT 3.48.0), so only the [compat] section
was inconsistent.
Revert the two offending compat entries for this folder:
OrdinaryDiffEq "7" -> "6"
RecursiveArrayTools "4" -> "3"
Verified locally on Julia 1.10 (the update job's version): Pkg.update()
now resolves cleanly (SciMLBase 2.153.1, OrdinaryDiffEq 6.111.0, RAT 3.54.0,
Turing 0.42.9, DiffEqBayes 3.13.0), and Pkg.resolve() against the committed
Manifest reports no Project changes. Benchmark scripts only use Tsit5/Vern9
and VectorOfArray, which are unchanged across the 6/7 and 3/4 boundaries.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Fixes genuine typos in benchmark prose/code (choses->chooses, reffer->refer, turqoise->turquoise, acelerations->accelerations, alorithms->algorithms, dinamics->dynamics) and adds legitimate domain words / false positives to .typos.toml (opf/OPF for Optimal Power Flow, MEK kinase, ein/pn/Pn/dbe identifiers and name/UUID substrings). Excludes vendored pglib-opf opf_data/ .m files (third-party license-header 'inquries'). Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… 1.12
The Weekly Update job runs Pkg.update() in every benchmarks/* folder in one
process and aborts on the first unresolvable environment. After the
BayesianInference fix it still crashed on later folders. A full resolution
audit (Julia 1.10) found six folders whose [compat] is unsatisfiable:
BayesianInference (fixed earlier in this PR; SciMLBase 2 vs 3)
Bio ReactionNetworkImporters 0.15 needs MTK 9, project pins MTK 11
HybridJumps PiecewiseDeterministicMarkovProcesses 0.0.10 ⊥ RecursiveArrayTools 4
Jumps JumpProblemLibrary 1 needs Catalyst 2, project pins Catalyst 16
(+ PDMP 0.0.10 ⊥ RAT 4)
ParameterEstimation DiffEqParamEstim 2 pins SciMLBase ≤2, project pins MTK 11/ODE 7/RAT 4
LinearSolve ParU_jll 1.0.x requires Julia ≥1.12; job ran on 1.10
Fixes (minimal, tightest bound that restores a satisfiable resolution):
Bio ReactionNetworkImporters "0.15" -> "1" (RNI 1 supports Catalyst 16 + the MTK-11 generation; keeps the SciMLBase-3 stack)
HybridJumps PiecewiseDeterministicMarkovProcesses "0.0.10" -> "0.0.12" (floor bump; 0.0.12 supports RAT 4 / SciMLBase 3 / Sundials 6)
Jumps JumpProblemLibrary "1.0.0" -> "2" (supports Catalyst 16); PDMP "0.0.10" -> "0.0.12"
ParameterEstimation OrdinaryDiffEq "7"->"6", RecursiveArrayTools "4"->"3", ModelingToolkit "11"->"9"
(DiffEqParamEstim has no SciMLBase-3 release; revert to the SciMLBase-2 generation
matching the last-working Manifest: MTK 9.61 / ODE 6.90 / RAT 3.27 / SciMLBase 2.72)
LinearSolve cannot resolve on Julia 1.10: ParU_jll (used by ParUFactorization()
in the benchmark) only has versions 1.0.0/1.0.1, both requiring julia ≥1.12, and
its Manifest already declares julia_version 1.12.4. Rather than weaken the
benchmark by dropping ParU, bump the Weekly Update job from Julia 1.10 to 1.12 to
match where the benchmark stack now lives.
Local verification (resolution-only, mirrors the job's Pkg.update resolver):
- Reproduced each Unsatisfiable failure on the unmodified Project.tomls (Julia 1.10).
- With these fixes, all 38 benchmark folders resolve cleanly on Julia 1.12 (38/38 OK),
including the six above; the six also confirmed individually.
- update.jl's preamble (Pkg.add Git/GitHub/Dates) resolves and installs on 1.12.
Note: the benchmark *.jmd scripts were not executed against the bumped deps
(Bio/Jumps run heavy models on self-hosted runners); only resolvability — what
update_weekly actually exercises — was verified.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Member
Author
|
Expanded this PR to fully green Added minimal compat fixes for the four, and bumped |
ChrisRackauckas
marked this pull request as ready for review
June 23, 2026 00:59
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The default-branch Weekly Update workflow (
update_weekly) is red onmaster. The job (.github/workflows/update.jl) runsPkg.update()in everybenchmarks/*folder in a single Julia process and aborts on the first unresolvable environment. It died first on BayesianInference, but a full resolution audit (Julia 1.10) showed six folders whose[compat]is unsatisfiable — so fixing BayesianInference alone would have just moved the crash to the next folder.Root cause
Commit
fb9a3b66mechanically bumped every benchmarkProject.tomlto the v7 / SciMLBase-3 / RecursiveArrayTools-4 stack. Six folders depend on something that cannot live in that stack, or on a package not available on the job's Julia version:Turing/DiffEqBayespin SciMLBase ≤2;RAT 4/ODE 7need SciMLBase 3ReactionNetworkImporters 0.15needs MTK 9; project pinsModelingToolkit 11PiecewiseDeterministicMarkovProcesses 0.0.10⊥RecursiveArrayTools 4JumpProblemLibrary 1needs Catalyst 2; project pinsCatalyst 16(+ PDMP 0.0.10 ⊥ RAT 4)DiffEqParamEstim 2pins SciMLBase ≤2 (no SciMLBase-3 release exists); project pins MTK 11 / ODE 7 / RAT 4ParU_jllonly has 1.0.0/1.0.1, both requiring Julia ≥1.12; the job ran on 1.10Fix
Compat adjustments (tightest bound that restores a satisfiable resolution, keeping deps as new as possible):
OrdinaryDiffEq 7→6,RecursiveArrayTools 4→3(back to the SciMLBase-2 generation Turing/DiffEqBayes require).ReactionNetworkImporters 0.15→1(RNI 1 supportsCatalyst 16and the MTK-11 generation — keeps the SciMLBase-3 stack).PiecewiseDeterministicMarkovProcesses 0.0.10→0.0.12(floor bump; 0.0.12 supports RAT 4 / SciMLBase 3 / Sundials 6).JumpProblemLibrary 1.0.0→2(supports Catalyst 16);PDMP 0.0.10→0.0.12.ModelingToolkit 11→9,OrdinaryDiffEq 7→6,RecursiveArrayTools 4→3(DiffEqParamEstimhas no SciMLBase-3 release; revert to the SciMLBase-2 generation matching the last-working Manifest — MTK 9.61 / ODE 6.90 / RAT 3.27 / SciMLBase 2.72).Harness change for LinearSolve:
.github/workflows/update.yml: bump the Weekly Update job from Julia 1.10 → 1.12.ParU_jll(used byParUFactorization()in the LinearSolve benchmark) requires Julia ≥1.12, and LinearSolve's committedManifest.tomlalready declaresjulia_version = "1.12.4". Dropping ParU would weaken the benchmark, so instead the update job is moved to the Julia version the stack now targets.Local verification (resolution-only, mirroring the job's
Pkg.updateresolver)Unsatisfiablefailure on the unmodifiedProject.tomls on Julia 1.10 (matches the exact resolver error in the failing CI log).update.jl's preamble (Pkg.add(["Git","GitHub","Dates"])) resolves and installs on 1.12.Note: only resolvability (what
update_weeklyexercises) was verified. The benchmark*.jmdscripts were not executed against the bumped deps — Bio/Jumps run heavy models on self-hosted runners — so the per-benchmark "Run:" PR checks should be watched on review.Please ignore until reviewed by @ChrisRackauckas